#! /usr/bin/env python
# -*- coding: utf-8 -*-

"""
Модуль для расчета интенсивности деформации для данной матрицы плотности 
распределения и ориентации тройственного парагенезиса по методу, предложенному в
(Семинский, Гладков, Геология и Геофизика. 1991. №5).
I = i_max * (i_med + i_min) / (i_max + i_med + i_min)
"""

import sys
from optparse import OptionParser

import fr_parser
from readdensity import readdensity
from plane import Plane
from grid_plane import PlaneGrid

# Parsing of an options
optparser= OptionParser()
optparser.add_option('-d', '--density-file', dest='density',
                     help='Name of a density file')
options, args = optparser.parse_args(sys.argv[1:])

# Parse the desity grid file
if options.density:
	density, size, max_density_val = readdensity(options.density)

# prepare grid for searching max
grid = PlaneGrid(incr=[int(size), int(size)])
for pl in density:        
    grid.add(plane=Plane(pl[0], pl[1]), val=pl[2])

# Parsig of a triple
lines = sys.stdin.read().split('\n')
triple = []
for line in lines:
    val = fr_parser.parse_line(line)
    if val: triple.append(val)    

# Get the density value from each plane of a triple
densities = []
for pl in triple:
    densities.append(grid.get(Plane(int(pl[0]),int(pl[1]))))

# Calculate intesity
densities.sort()
i_max = densities[2]
i_med = densities[1]
i_min = densities[0]
I = i_max * (i_med + i_min) / (i_max + i_med + i_min)
print I
